package com.chapter11.chap_exercise;

public class Test04 {
    public static void main(String[] args) {

        //第一种将匿名内部类在Cellphone类的方法中实现重写接口方法
        Cellphone cellphone = new Cellphone();
        cellphone.testWork();


        //第二种在著方法中作为参数传递实现重写接口方法

        new Cellphone().testWork(new Calculator() {
            @Override
            public String work(String str) {
                return str;
            }
        },"你好");


    }
}

interface Calculator {
    public abstract String work(String str);
}

class Cellphone {

    //1.匿名内部类在类中重写方法再通过主方法创建对象调用被匿名内部类重写的方法
    public void testWork() {

        //第一种匿名内部类调用方法
        Calculator calc = new Calculator() {
            @Override
            public String work(String a) {
                return a;
            }
        };
        System.out.println(calc.work("我是匿名内部类在Cellphone中重写的第一种实现方式"));


        //第二种匿名内部类的调用方法
        System.out.println(new Calculator() {
            public String work(String b) {
                return b;
            }
        }.work("我是匿名内部类在Cellphone中重写的第二种实现方式")
        );

    }


    //2.匿名内部类作为参数在主方法中重写接口方法
    public void testWork(Calculator calc,String str2) {
        String s = calc.work(str2);
        System.out.println(s);
    }
}



